/**
 * @author Derek
 * @create 2016/12/28
 */
$(function() {
    //table
    tableInit();

    //查询
    $('#search').click(function () {
        query();
    });
});

//table
function tableInit(){
    $('#table').bootstrapTable({
        url : "/user/query",
        sidePagination : 'server',
        cache : false,// 设置False禁用AJAX请求的缓存
        height : '',
        striped : true,// 使表格带有条纹
        pagination : true,// 设置True在表格底部显示分页工具栏
        pageList : [ 10, 15, 20, 30, 50, 100 ],
        search : false,
        queryParams : queryParams,
        showColumns : false,// 设置为True可显示表格显示/隐藏列表
        showRefresh : false,// 设置为True可显示刷新按钮
        minimumCountColumns : 1,// 表格显示/隐藏列表时可设置最小隐藏的列数
        clickToSelect : false,// 设置为True时点击行即可选中单选/复选框
        toolbar : '#custom-toolbar',
        columns : [
            {field : 'realName',title : '姓名',align : 'center',width : 80,valign : 'middle',
                formatter : function(value, row) {
                    return addClick(value, row.id);
                }
            },
            {field : 'sex',title : '性别',align : 'center',width : 60,valign : 'middle',
                formatter : function(value,row) {
                    return value == 1 ? "男" : "女";
                }
            },
            {field : 'phone',title : '电话',align : 'center',width : 40,valign : 'middle'},
            {field : 'idCard',title : '身份证',align : 'center',width : 40,valign : 'middle'},
            {field : 'companys',title : '所属公司',align : 'center',width : '80',valign : 'middle',
                formatter : function(value,row) {
                    return showCompanys(value);
                }
            },
            {field : 'id',title : '省市区',align : 'center',width : '80',valign : 'middle',
                formatter : function(value,row) {
                    return showBelong(row.province, row.city, row.county);
                }
            },
            {field : 'address',title : '家庭住址',align : 'center',width : 40,valign : 'middle'},
            {field : 'createTime',title : '创建时间',align : 'center',width : 60,valign : 'middle',
                formatter : function(value) {
                    return getSmpFormatDate(value);
                }
            },
            {field : 'isForbidden',title : '状态',align : 'center',width : 40,valign : 'middle',
                formatter : function(value) {
                    return value == true ? "禁用" : "可用";
                }
            },
            {field : 'id',title : '操作',align : 'center',width : 100,valign : 'middle',
                formatter : function(value) {
                    return operaButton(value);
                }
            }
        ]
    });
}
function query(){
    $('#table').bootstrapTable('refreshOptions',{pageNumber:1});
}

function queryParams(params) {
    var name = $('#search_name').val();
    var queryParam = {
        name : name,
        compId : compId,
        pageSize : params.limit,
        pageNumber : params.offset
    };
    return queryParam;
}

/**
 * 所属省市区
 * @param province
 * @param city
 * @param county
 * @returns {string}
 */
function showBelong(province, city, county){
    var addr = "";
    if(province != null){
        addr += province.name;
    }
    if(city != null){
        addr += city.name;
    }
    if(county != null){
        addr += county.name;
    }
    return addr;
}

function showCompanys(value) {
    var names = "";
    if(value != null && value.length > 0){
        for(var i=0;len = value.length, i< len; i++){
            names += value[i].name + ",";
        }
    }
    if (names.length > 0 ) {
        names = names.substring(0, names.length-1);
    }
    return names;
}

//点击按钮
function addClick(value, id){
    return '<a data-toggle="modal" href="#addModal" onclick="showDetail(\''+ id + '\')">' + value + '</a>';
}

/**
 * 查询员工详情
 * @param id
 */
function showDetail(id){
    emptyInput();//清空所有输入框
    queryDetail(id); //查询详情内容
    $("#head_name").html("详情");
    disabledOper(true);
}

/**
 * 打开编辑页面
 * @param id
 */
function edit(id){
    emptyInput();//清空所有输入框
    queryDetail(id);//查询详情内容
    $("#head_name").html("编辑");
    $("#edit_id").val(id);
    disabledOper(false);
    $('#username').attr("disabled",true);
}

/**
 * 新增
 */
function setAdd(){
    emptyInput();//清空
    disabledOper(false); //按钮显示，可编辑
    $("#head_name").html("新增");
    initRoles();
}

/**
 * 操作html
 * @param id
 * @param name
 * @returns {string}
 */
function operaButton(id){
    var html = '';
    //if(update){
        html += '<a data-toggle="modal" href="#addModal" class="btn btn-info btn-xs" onclick="edit(\''+ id + '\')"><i class="fa fa-pencil"></i> 修改</a>';
    //}
    // if(del){
    //    html += '<a href="javascript:void(0)" class="btn btn-danger btn-xs" onclick="remove(\''+ id + '\')"><i class="fa fa-trash-o"></i> 删除</a>';
    // }
    return html;
}

/**
 * 查询一个产品详情,打开新增页面
 * @param id
 */
function queryDetail(id){
    var param = {
        id : id
    }
    ajaxPost("/user/detail", param, function(data){
        console.log(data);
        if (data && data.code == Const.SUCCESS) {
            var d = data.data;
            $("#head_name").html("详情");
            $('#username').val(d.username);
            $('#name').val(d.realName);
            $('#sex').val(d.sex);
            $('#idCard').val(d.idCard);
            $('#phone').val(d.phone);
            //省市区
            if(d.county != null){
                $('#countyId').val(d.county.aId);
            }
            var provinceName =  d.province == null ? "" : d.province.name;
            var cityName =  d.city == null ? "" : d.city.name;
            var countyName =  d.county == null ? "" : d.county.name;
            var addr = provinceName + cityName + countyName;
            $('#county').val(addr);
            $('#address').val(d.address);

            //公司
            var compNames = "";
            var compIds = "";
            if(d.companys != null && d.companys.length > 0){
                var compData = d.companys;
                for(var i=0;len = compData.length, i< len; i++){
                    compNames += compData[i].name + ",";
                    compIds += compData[i].id + ",";
                }
            }
            if (compNames.length > 0 ) {
                compNames = compNames.substring(0, compNames.length-1);
            }
            if (compIds.length > 0 ) {
                compIds = compIds.substring(0, compIds.length-1);
            }
            $('#compSelect').val(compNames);
            $('#compSelectIds').val(compIds);

            var isForbidden = d.isForbidden == true ? 1: 0;
            $('#forbiden').val(isForbidden);
            //初始化角色
            initRoles(d.roles);
        }else {
            error("警告",data.data);
        }
    });
}


/**
 * 保存编辑和新增
 */
function save(){
    var id = $('#edit_id').val();
    var username = $('#username').val();
    var name = $('#name').val();
    var sex = $('#sex').val();
    var idCard = $('#idCard').val();
    var phone = $('#phone').val();

    var countyAid = $('#countyId').val();
    var address = $("#address").val();
    var forbidden = $('#forbiden').val();
    if(username == null || username == "") {
        info("用户名必填");
        return;
    }
    if(name == null || name == "") {
        info("姓名必填");
        return;
    }
    if(countyAid == null || countyAid == "") {
        info("省市区必选");
        return;
    }

    var compIds = $('#compSelectIds').val();
    if(compIds == null || compIds == "") {
        info("公司必选");
        return;
    }
    var roles = $("#roles").val();    //多选
    if(roles == null || roles == "") {
        info("角色必填");
        return;
    }

    var userVo = {};
    userVo.id = id;
    userVo.username = username;
    userVo.realName = name;
    userVo.sex = sex;
    userVo.idCard = idCard;
    userVo.phone = phone;
    userVo.address = address;
    userVo.forbidden = forbidden;
    userVo.countyAid = countyAid;
    //用户转化使用，不做处理
    var param = {
        roles : roles,
        compIds : compIds,
        userStr : JSON.stringify(userVo)
    }
    ajaxPost("/user/save", param, function(data){
        console.log(data);
        if (data && data.code == Const.SUCCESS) {
            success("保存成功！");
            $('#addModal').modal('hide');
            query();
        }else {
            error("警告",data.data);
        }
    });
}

/**
 * 编辑框内的禁用和解禁
 */
function disabledOper(isDisable) {
    if(isDisable){
        $('.modal input').attr("disabled",true);
        $('.modal select').attr("disabled",true);

        //选择省市区按钮
        $('#menuBtn').hide();
        $('#compBtn').hide();
        //隐藏保存按钮
        $('#save_btn').hide();
    } else {
        $('.modal input').removeAttr("disabled");
        $('.modal select').removeAttr("disabled");

        $('#menuBtn').show();
        $('#compBtn').show();
        $('#save_btn').show();
    }
}

/**
 * 清空model输入框
 */
function emptyInput(){
    $('input').val('');
    $('select').val(1);
    $("#forbiden").val(0);
}



